From 452f2f03946f8b7aa272305c45456e5053c843ce Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Mon, 5 Feb 2018 17:20:17 +0100 Subject: [PATCH] cssprovider: Use g_file_load_bytes() This way, we get a special no-copy case for resources. https://bugzilla.gnome.org/show_bug.cgi?id=790270 --- gtk/gtkcssprovider.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c index 8a9a2d59fe..d4d865b682 100644 --- a/gtk/gtkcssprovider.c +++ b/gtk/gtkcssprovider.c @@ -1386,17 +1386,17 @@ gtk_css_provider_load_internal (GtkCssProvider *css_provider, const char *text) { GtkCssScanner *scanner; - char *free_data = NULL; + GBytes *bytes; if (text == NULL) { GError *load_error = NULL; - if (g_file_load_contents (file, NULL, - &free_data, NULL, - NULL, &load_error)) + bytes = g_file_load_bytes (file, NULL, NULL, &load_error); + + if (bytes) { - text = free_data; + text = g_bytes_get_data (bytes, NULL); } else { @@ -1428,6 +1428,10 @@ gtk_css_provider_load_internal (GtkCssProvider *css_provider, } } } + else + { + bytes = NULL; + } if (text) { @@ -1445,7 +1449,8 @@ gtk_css_provider_load_internal (GtkCssProvider *css_provider, gtk_css_provider_postprocess (css_provider); } - g_free (free_data); + if (bytes) + g_bytes_unref (bytes); } /** -- 2.30.2